﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using ApuestasJMG.GUI.Contrato;
using Logica.Comandos;
using Datos.Entidades;
using Logica.FabricaLogica;
using Datos.Entidades.FabricaEntidades;
using Subgurim.Controles;
using Logica.Fabricas;

namespace ApuestasJMG.GUI.Presentador
{
    public class PresentadorListarMaquinas
    {


         private IContratoListarMaquina _vista;
               /// <summary>
        /// Constructor que inicializa el atributo vista
        /// </summary>
        /// <param name="vista">Objeto de tipo Interfaz</param>
        public PresentadorListarMaquinas(IContratoListarMaquina vista)
        {
            this._vista = vista;
        }
        List<Entidad> lasMaquinas=new List<Entidad>();
        private GMap ObtenerMapa(double lat, double lng)
        {

            GMap mapa = _vista.GoogleMap;
            mapa.Key =
                "ABQIAAAAmOYYhuw49CfNIcF4TCfHchRXA9H1-73k1MkKjp_pA8g760BL1xR0AZhsBh9TY7i6ZDOxRf-Qd09hnA";

            mapa.addControl(new GControl(GControl.preBuilt.MapTypeControl));
            mapa.addControl(new GControl(GControl.preBuilt.MapTypeControl));
            mapa.addControl(new GControl(GControl.preBuilt.LargeMapControl));
            mapa.setCenter(new GLatLng(lat, lng), 13);
            mapa.Width = 400;
            mapa.Height = 300;
            mapa.enableHookMouseWheelToZoom = true;
            mapa.enableGKeyboardHandler = true;
            mapa.enableDoubleClickZoom = true;
            mapa.enableContinuousZoom = true;
            mapa.enableDragging = true;
            mapa.GZoom = 15;

            return mapa;

        }

        /// <summary>
        /// Metodo que hace la asignación de valores para la generación del mapa y el pin
        /// </summary>
        public void CargarMapa()
        {
            Comando comando2 = FabricaComandoMaquina.CrearComandoListarMaquina(int.Parse(_vista.Id));
            comando2.Ejecutar();
            lasMaquinas = comando2.ListaEntidad;
            Double lat = 10.463757868363302;
            Double lng = -66.97772026062011;

            GLatLng coordenadas = new GLatLng(lat, lng);
            GMap mapa = ObtenerMapa(lat, lng);
            Comando comando = FabricaComandoGoogleMap.ObtenerComandoPropPinGoogleMap(true);
            comando.Ejecutar();
            //Configuración del pin en el mapa
            GMarkerOptions prop = comando.GMa; // FabricaComandoGoogleMap.ObtenerComandoPropPinGoogleMap(true);


            if (lasMaquinas != null)
            {

                for (int i = 0; i < lasMaquinas.Count; i++)
                {

                    GLatLng coordenadas2 = new GLatLng((Double)(lasMaquinas.ElementAt(i) as Maquina).Latitud, (Double)(lasMaquinas.ElementAt(i) as Maquina).Longitud);
                    GMarker pin = new GMarker(coordenadas2, prop);

                    GInfoWindow window = new GInfoWindow(pin, "<b>Nombre Local: </b>" + (lasMaquinas.ElementAt(i) as Maquina).NombreLocal + ". <br><b>Dirección:</b>" + (lasMaquinas.ElementAt(i) as Maquina).Estado + ", " + (lasMaquinas.ElementAt(i) as Maquina).Ciudad + "<br>" + (lasMaquinas.ElementAt(i) as Maquina).Calle + "<br>"
                        + ". <br><b>Teléfono:</b> " + (lasMaquinas.ElementAt(i) as Maquina).Telefono + ". <br><b>Mail:</b> " + (lasMaquinas.ElementAt(i) as Maquina).Piso, true);
                 
                    mapa.addInfoWindow(window);
                    // Activa el listener para el evento de arrastre del pin en el mapa
                    mapa.addListener(new GListener(pin.ID, GListener.Event.dragend,
                     string.Format(@"
               function(overlay, point)
               {{
                  var ev = new serverEvent('Arrastre', {0});
                  ev.addArg(this.getPoint());
                  ev.send();
               }}
               ", mapa.GMap_Id)));

                }


            }

          

            

        }

      


    }
}